package test;

import java.util.Arrays;
import java.util.Scanner;

public class Encryption {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入四位号码：");
        int number = scanner.nextInt();
        if (isFourDigits(number)){
            //将这个四位数的个、十、百、千的数将这些数放到一个一个大小为4的数组
            int[] digits = extractDigits(number);
            //将这个数组的每一个数都加上3然后除以10的余数代替该数
            digits = modifyArray(digits);
            //将这个数组第一位和第四位交换，第二位和第三位交换
            digits = swapPositions(digits);
            //打印加密后的号码
            System.out.println("交换后的数：" + toFourDigitNumber(digits));
        } else {
            System.out.println("输入的数不是四位数。");
        }
    }
    public static int toFourDigitNumber(int[] array) {
        // 将数组元素转换为字符串表示
        String digitStr = "";
        for (int digit : array) {
            digitStr += String.valueOf(digit);
        }
        // 将字符串转换为整数
        int fourDigitNumber = Integer.parseInt(digitStr);
        return fourDigitNumber;
    }
    public static boolean isFourDigits(int number) {
        // 检查数字的范围是否在 1000 到 9999 之间
        return number >= 1000 && number <= 9999;
    }
    public static int[] swapPositions(int[] array) {
        int temp;
        // 交换第一位和第四位
        temp = array[0];
        array[0] = array[3];
        array[3] = temp;
        // 交换第二位和第三位
        temp = array[1];
        array[1] = array[2];
        array[2] = temp;
        return array;
    }
    private static int[] modifyArray(int[] array) {
        int[] modifiedArray = new int[array.length];
        for (int i = 0; i < array.length; i++) {
            modifiedArray[i] = (array[i] + 3) % 10;
        }
        return modifiedArray;
    }
    private static int[] extractDigits(int number) {
        int[] digits = new int[4];
        // 获取千位数
        digits[0] = number / 1000;
        // 获取百位数
        int remainder = number % 1000;
        digits[1] = remainder / 100;
        // 获取十位数
        remainder = remainder % 100;
        digits[2] = remainder / 10;
        // 获取个位数
        digits[3] = remainder % 10;
        return digits;
    }
}